在介紹變數時有提到函式內作用、區域內作用,也就是本篇文會介紹的內容:
JavaScript中變數作用的範圍分為區域變數、全域變數,而影響變數有效範圍的最小單位是function。
以簡易的敘述來介紹範圍:
小狗想要在學校圖書館找到一本論文
順利訪問:在圖書館內詢問服務台,此時書的位置是在作用範圍內
不順利訪問:在走廊詢問路人:我想要的書XXX在哪邊呢?此時需要的信息與索取訊息的位置不同,路人表示問號(??
let count = 0; //宣告記錄用
function test(){ //
count++; //在函式中使用count,而函式中無count的值,因此向外尋找
}
test(); // 找到test的程式碼並執行
console.log(`紀錄${count}次`)
在這個範例中可以發現function可以讀取外層已宣告的變數,當此函式外層找不到時,會再往下一層外層尋找,若仍找不到則會出現錯誤訊息。
let a = 1; // 於最外層的變數宣告
function x() {
let b = 2;
console.log(b);
function y() {
let c = 3;
console.log(c);
function z() {
let d = 4;
console.log(d);
console.log(c);
}
z();
}
y();
}
x();
console.log(a); // 1
console.log(b); // b is not defined
console.log(c); // c is not defined
console.log(d); // d is not defined
在這個範例中只有a是全域變數,因外層無法取得內層宣告的變數,因此我們無法在函式外訪問b、c、d的變數
此外也可以看到在y( )、z( )中皆可訪問變數c的值
以上為本次範圍的介紹,若有問題歡迎指教!